// RAP [rh] AboutDialog left out for now
///*******************************************************************************
// * Copyright (c) 2004, 2008 IBM Corporation and others.
// * All rights reserved. This program and the accompanying materials
// * are made available under the terms of the Eclipse Public License v1.0
// * which accompanies this distribution, and is available at
// * http://www.eclipse.org/legal/epl-v10.html
// *
// * Contributors:
// * IBM Corporation - initial API and implementation
// *******************************************************************************/
//package org.eclipse.ui.internal.about;
//
//import java.io.IOException;
//import java.security.GeneralSecurityException;
//
//import org.eclipse.core.runtime.Platform;
//import org.eclipse.osgi.signedcontent.SignedContent;
//import org.eclipse.osgi.signedcontent.SignedContentFactory;
//import org.eclipse.ui.internal.WorkbenchMessages;
//import org.eclipse.ui.internal.WorkbenchPlugin;
//import org.osgi.framework.Bundle;
//import org.osgi.framework.BundleContext;
//import org.osgi.framework.Constants;
//import org.osgi.framework.ServiceReference;
//
//
//
///**
// * A small class to manage the about dialog information for a single bundle.
// * @since 3.0
// */
//public class AboutBundleData extends AboutData {
//
// private Bundle bundle;
//
// private boolean isSignedDetermined = false;
//
// private boolean isSigned;
//
// public AboutBundleData(Bundle bundle) {
// super(getResourceString(bundle, Constants.BUNDLE_VENDOR),
// getResourceString(bundle, Constants.BUNDLE_NAME),
// getResourceString(bundle, Constants.BUNDLE_VERSION), bundle
// .getSymbolicName());
//
// this.bundle = bundle;
//
// }
//
// public int getState() {
// return bundle.getState();
// }
//
// /**
// * Return a string representation of the arugment state. Does not return
// * null.
// */
// public String getStateName() {
// switch (getState()) {
// case Bundle.INSTALLED:
// return WorkbenchMessages.AboutPluginsDialog_state_installed;
// case Bundle.RESOLVED:
// return WorkbenchMessages.AboutPluginsDialog_state_resolved;
// case Bundle.STARTING:
// return WorkbenchMessages.AboutPluginsDialog_state_starting;
// case Bundle.STOPPING:
// return WorkbenchMessages.AboutPluginsDialog_state_stopping;
// case Bundle.UNINSTALLED:
// return WorkbenchMessages.AboutPluginsDialog_state_uninstalled;
// case Bundle.ACTIVE:
// return WorkbenchMessages.AboutPluginsDialog_state_active;
// default:
// return WorkbenchMessages.AboutPluginsDialog_state_unknown;
// }
// }
//
// /**
// * A function to translate the resource tags that may be embedded in a
// * string associated with some bundle.
// *
// * @param headerName
// * the used to retrieve the correct string
// * @return the string or null if the string cannot be found
// */
// private static String getResourceString(Bundle bundle, String headerName) {
// String value = (String) bundle.getHeaders().get(headerName);
// return value == null ? null : Platform.getResourceString(bundle, value);
// }
//
// public boolean isSignedDetermined() {
// return isSignedDetermined;
// }
//
// public boolean isSigned() throws IllegalStateException {
//
// if (isSignedDetermined)
// return isSigned;
//
// BundleContext bundleContext = WorkbenchPlugin.getDefault()
// .getBundleContext();
// ServiceReference factoryRef = bundleContext
// .getServiceReference(SignedContentFactory.class.getName());
// if (factoryRef == null)
// throw new IllegalStateException();
// SignedContentFactory contentFactory = (SignedContentFactory) bundleContext
// .getService(factoryRef);
// try {
// SignedContent signedContent = contentFactory.getSignedContent(bundle);
// isSigned = signedContent != null && signedContent.isSigned();
// isSignedDetermined = true;
// return isSigned;
// } catch (IOException e) {
// throw (IllegalStateException) new IllegalStateException().initCause(e);
// } catch (GeneralSecurityException e){
// throw (IllegalStateException) new IllegalStateException().initCause(e);
// } finally {
// bundleContext.ungetService(factoryRef);
// }
// }
//
// /**
// * @return
// */
// public Bundle getBundle() {
// return bundle;
// }
//
//// private boolean isBundleSigned(Bundle bundle)
//// {
//// isSignedDetermined = true;
////
//// boolean bRet = false;
//// if ( null != bundle.findEntries("META-INF", "*.SF", false) ) { //$NON-NLS-1$//$NON-NLS-2$
//// bRet = true;
//// }
//// return bRet;
////
////
//// /*
//// * The below code features implementations that do more.
//// */
////
////
//// /* String loc = "";
////
//// StringTokenizer st = new StringTokenizer(this.location,"@");
////
//// try
//// {
//// st.nextToken();
//// loc = st.nextToken();
//// }
//// catch( NoSuchElementException e )
//// {
//// return "Not a jar file";
//// }
//// if(! loc.endsWith(".jar"))
//// {
//// return "Not a jar file";
//// }
////
//// try
//// {
//// String fileLocation = Platform.getInstallLocation().getURL().getFile() + loc;
//// JarFile jar = new JarFile( fileLocation );
////
//// Enumeration e = jar.entries();
//// /*ArrayList list = new ArrayList();
//// byte[] buffer = new byte[8192];
//// while( e.hasMoreElements())
//// {
//// JarEntry currentEntry = (JarEntry)e.nextElement();
//// list.add(currentEntry);
//// InputStream is = jar.getInputStream(currentEntry);
//// while(( is.read(buffer, 0, buffer.length)) != -1 ){
//// //can't get certificates until you read the whole dang thing.
//// }
//// if(is != null ) is.close();
//// }
////
////
//// int checked = 0;
//// boolean signed =false;
//// for( int index = 0; index < list.size(); index++ )
//// {
//// checked++;
//// JarEntry je = (JarEntry)list.get(index);
//// Certificate[] certs = je.getCertificates();
//// if( certs != null )
//// {
//// //Something in this jar is signed by something!!
//// signed = true;
//// infoLine[5] = "Signed by "+certs[0].toString();
//// break;
//// }
////
//// }
//// if( !signed )
//// {
//// infoLine[5] = "Not signed";
//// }
////
//// boolean isSigned = false;
//// while( e.hasMoreElements() )
//// {
//// JarEntry entry = (JarEntry)e.nextElement();
////
//// if( entry.getName().matches("[mM][eE][tT][aA][-][iI][nN][fF]/.*[.][sS][fF]"))
//// {
//// isSigned = true;
//// break;
//// }
//// if( !entry.getName().matches("[mM][eE][tT][aA][-][iI][nN][fF].*"))
//// {
//// break;
//// }
//// }
//// return isSigned ? "Signed!" : "Not Signed.";
////
//// } catch (IOException e) {
//// return "Couldn't open jar file: " + e.toString();
//// } */
//// }
//}